home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 4
/
FM Towns Free Software Collection 4 - Disc 1.iso
/
pao
/
towns
/
paolib
/
cdp
/
cdp.h
< prev
next >
Wrap
Text File
|
1991-10-18
|
6KB
|
161 lines
/* << High C V1.4 >> **********************************************************
**
** CD簡易演奏ライブラリ用ヘッダ
**
** 1991.02.09 : CREATE
** 1991.02.12 : FINISH
**
** < HISTORY >
** 1991.02.09 : CREATE
** 1991.02.19 : SHUFFLE機能の追加.
**
** < note > : TABS = 4
**
** Programmed by Y.Hirata ( Nifty ID : NAB03321 )
**
******************************************************************************/
#ifdef _CDP_LIB /* ライブラリソース用 */
#define EX
#else /* ライブラリ使用側 */
#define EX extern
#endif
#define CDP_MAX_TRACK 99 /* CD-ROM 最大トラック数:99 */
#define CDP_MIN_TRACK 1 /* CD-ROM 最小トラック数:1 */
#define CDP_ZERO 0
#define CDP_TRUE 1 /* 真値 */
#define CDP_FALSE 0 /* 偽値 */
#define CDP_ERROR -1 /* エラー時のリターン値 */
#define CDP_NOERROR CDP_ZERO /* 正常終了時のリターン値 */
#define CDP_RETRY 10 /* エラー発生時のリトライ回数 */
#define CDP_MAX_REPEAT 255 /* 最大演奏リピート回数 */
#define CDP_MIN_REPEAT 1 /* 最小演奏リピート回数 */
#define CDP_FFREW_SEC 1 /* 先送り/後戻り時カウント値[秒] */
/*
** 乱数のマクロを使用する側で、stdio.h, stdlib.h, time.h を include して下さい!
*/
#define CDP_RANDINIT srand((unsigned int)clock()) /* 乱数初期化 */
#define CDP_RANDOM(x) (rand()%(x)) /* 乱数 : 0~x */
/* CDタイプ値の定義 */
#define CDP_TYPE_NO 0 /* なし */
#define CDP_TYPE_CDDA 1 /* CD-DA */
#define CDP_TYPE_DATA 2 /* DATA */
#define CDP_TYPE_BOTH 3 /* CD-DA & DATA */
/* ステータス値の定義 */
#define CDP_STAT_NOTREADY -1 /* NOT READY */
#define CDP_STAT_STOP 0 /* 停止中 */
#define CDP_STAT_PLAY 1 /* 演奏中 */
#define CDP_STAT_PAUSE 2 /* 一時停止中 */
/* エラー値の定義 */
#define CDP_ERR_NOERROR CDP_ZERO /* 正常 */
#define CDP_ERR_NOTREADY 0x001 /* CDがセットされていない */
#define CDP_ERR_PARAMETER 0x002 /* パラメタエラー */
#define CDP_ERR_NOTCONNECT 0x004 /* ドライブが非接続 */
#define CDP_ERR_ABNORMAL 0x008 /* コマンドが異常終了 */
#define CDP_ERR_MEDIA 0x010 /* メディアエラー */
#define CDP_ERR_HARD 0x020 /* ハードエラー */
#define CDP_ERR_PARITY 0x040 /* パリティエラー */
#define CDP_ERR_CHANGE 0x080 /* メディア交換あり */
#define CDP_ERR_DEVICENO 0x100 /* 指定デバイス番号誤り */
#define CDP_ERR_SECTOR 0x101 /* セクタ長が違う */
#define CDP_ERR_NOWPLAY 0x102 /* 音楽演奏中 */
#define CDP_ERR_NOWPAUSE 0x104 /* 音楽が一時停止中 */
#define CDP_ERR_NOTPAUSE 0x108 /* 一時停止状態でない */
#define CDP_ERR_NOMUSIC 0x110 /* 音楽データがない */
/*-----------------------------------------------------------------------------
** データ構造定義
-----------------------------------------------------------------------------*/
typedef struct { /* CD-ROM 曲情報用 */
char min ; /* 分 ( 1min = 60sec ) */
char sec ; /* 秒 ( 1sec = 75frame ) */
char frame ; /* フレーム */
} CDP_TRACK ;
typedef struct { /* CD-ROM 情報 */
int drv ; /* CDドライブ番号(0~6) */
int type ; /* CDタイプ */
int start ; /* 先頭トラック(曲)番号 */
int end ; /* 最終トラック(曲)番号 */
CDP_TRACK track[CDP_MAX_TRACK] ; /* 各トラックの演奏開始時間 */
CDP_TRACK discend ; /* ディスク内演奏終了時間 */
} CDP_INFO ;
/*-----------------------------------------------------------------------------
** グローバルデータ
-----------------------------------------------------------------------------*/
EX CDP_INFO CDP_INFO_buf ; /* CD情報格納用 */
EX CDP_TRACK CDP_CLOCK_nowdisc ; /* 演奏中のディスク内演奏時間 */
EX CDP_TRACK CDP_TIME_nowdisc ; /* 演奏中のディスク内残り演奏時間 */
EX CDP_TRACK CDP_CLOCK_nowtrack ; /* 演奏中のトラック内演奏時間 */
EX CDP_TRACK CDP_TIME_nowtrack ; /* 演奏中のトラック内残り演奏時間 */
EX CDP_TRACK CDP_TIME_track[CDP_MAX_TRACK] ; /* 各トラックの演奏時間 */
EX CDP_TRACK CDP_TIME_music ; /* 全トラックの演奏時間 */
EX CDP_TRACK CDP_TIME_data ; /* 全データ時間 */
EX CDP_TRACK CDP_CLOCK_start ; /* 演奏開始指定時間 */
EX CDP_TRACK CDP_CLOCK_end ; /* 演奏終了指定時間 */
EX CDP_TRACK CDP_CLOCK_pause ; /* 一時停止時のトラック内演奏時間 */
EX CDP_TRACK CDP_CLOCK_pausedisc ; /* 一時停止時のディスク内演奏時間 */
EX int CDP_REP_cnt ; /* リピート回数(演奏回数) */
EX int CDP_NOW_status ; /* 現在のCD演奏状態 */
EX int CDP_NOW_musicno ; /* 現在演奏中の曲番号 */
EX int CDP_NOW_start ; /* 演奏開始曲番号 */
EX int CDP_NOW_end ; /* 演奏終了曲番号 */
EX int CDP_NOW_pause ; /* 一時停止時の曲番号 */
EX char CDP_FLG_pauseplay ; /* 演奏開始指定時間にPAUSE解除するか? */
EX char CDP_FLG_shuffleinit ; /* シャッフル情報を初期化するのか? */
/*-----------------------------------------------------------------------------
** 関数プロトタイプ宣言
-----------------------------------------------------------------------------*/
/*
** CDP.C
*/
void CDP_init( void ) ;
int CDP_tocread( void ) ;
int CDP_status( void ) ;
int CDP_timeplay( void ) ;
int CDP_play( void ) ;
int CDP_pause( void ) ;
void CDP_stop( void ) ;
int CDP_shuffle( void ) ;
int CDP_shuffletime( void ) ;
/*
** CDPTIME.C
*/
int CDP_cmptime( signed char, signed char, signed char,
signed char, signed char, signed char ) ;
void CDP_subtime( char, char, char,
char, char, char,
char *, char *, char * ) ;
void CDP_addtime( char, char, char,
char, char, char,
char *, char *, char * ) ;
void CDP_set_time_start( int ) ;
void CDP_set_time_end( int ) ;
void CDP_timecalc( void ) ;
void CDP_remaintime( void ) ;
int CDP_data_check( int ) ;
int CDP_fftime( void ) ;
int CDP_rewtime( void ) ;
int CDP_ffmusic( void ) ;
int CDP_rewmusic( void ) ;
void CDP_debug_dispmsg( int ) ;